package cn.core.dict.service.intf;

import cn.core.dict.eo.Dict;
import cn.core.dict.qo.DictQO;
import cn.core.dict.vo.DictAndValueVO;
import cn.core.dict.vo.DictVO;
import cn.core.tool.util.Paging;
import cn.core.tool.util.Param;

import java.util.Collection;
import java.util.LinkedHashMap;

/**
 * 数据字典 服务接口
 */
public interface IDictService {

  /**
   * 数据字典 >>> 保存
   */
  public Dict save(Dict eo) throws Exception;

  /**
   * 数据字典 >>> 批量保存
   */
  public Collection<Dict> saveBatch(Collection<Dict> eos) throws Exception;

  /**
   * 数据字典 >>> 修改
   */
  public Dict update(Dict eo) throws Exception;

  /**
   * 数据字典 >>> 批量修改
   */
  public Collection<Dict> updateBatch(Collection<Dict> eos) throws Exception;

  /**
   * 数据字典 >>> 删除
   */
  public void remove(Dict eo) throws Exception;

  /**
   * 数据字典 >>> 批量删除
   */
  public void removeBatch(Collection<Dict> eos) throws Exception;

  /**
   * 数据字典 >>> 数据量
   */
  public Long count(DictQO qo) throws Exception;

  /**
   * 数据字典 >>> 主键查询
   */
  public Dict pk(DictQO qo) throws Exception;

  /**
   * 数据字典 >>> 查询
   */
  public Collection<Dict> query(DictQO qo) throws Exception;

  /**
   * 数据字典 >>> 分页
   */
  public Paging<Dict> paging(Param<DictQO> param) throws Exception;

  /**
   * 数据字典 >>> 业务数据量
   */
  public Long countVo(DictQO qo) throws Exception;

  /**
   * 数据字典 >>> 业务主键查询
   */
  public DictVO pkVo(DictQO qo) throws Exception;

  /**
   * 数据字典 >>> 业务查询
   */
  public Collection<DictVO> queryVo(DictQO qo) throws Exception;

  /**
   * 数据字典 >>> 业务分页
   */
  public Paging<DictVO> pagingVo(Param<DictQO> param) throws Exception;

  /**
   * 数据字典标识 >>> 数据字典和数据字典值信息
   */
  public DictAndValueVO getDictAndValueByDictKey(DictQO qo) throws Exception;

  /**
   * 数据字典 >>> 获取所有数据字典和数据字典值键值信息
   */
  public LinkedHashMap<String, LinkedHashMap<String, String>> getAllDictValueMapInfo() throws Exception;

}
